﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AppServidor
{
    public class Pista
    {
        int duracionms;

        public int Duracionms
        {
            get { return duracionms; }
            set { duracionms = value; }
        }
        string nombre;

        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }
        List<NotaReproducida> notasmusicales;
        public Pista() {
            notasmusicales = new List<NotaReproducida>();
        }
        public void add(int nota, int octava, int tiempo, int canal) {
            NotaReproducida notaObj = new NotaReproducida();
            notaObj.Canal = canal;
            notaObj.Tiempo = tiempo;
            notaObj.Octava = octava;
            notaObj.Nota = nota;
            add(notaObj);
        }
        public void add(NotaReproducida nota)
        {
            if (nota != null) {
                notasmusicales.Add(nota);
            }

        }
        /// <summary>
        /// Se debe llamar el tiempo cuando se a terminado de introducir todas las
        /// notas que lleven la pista.
        /// </summary>
        public void calcularTiempo() {
          Dictionary<int, int> tiempo_canal = new Dictionary<int, int>();
          duracionms = 0;
          foreach (NotaReproducida nota in notasmusicales) {

              int canal = nota.Canal;
              //separa el tiempo en cada canal
              if (tiempo_canal.ContainsKey(canal))
              {
                  int tiempo = tiempo_canal[canal];
                  tiempo_canal[canal] = tiempo + nota.Tiempo;
              }
              else {
                  //crea una nueva categoria si no existe el canal
                  tiempo_canal.Add(canal, nota.Tiempo);
              }
              //verifica si el tiempo del canal actual es mayor, que 
              //el tiempo maximo de canales
              if (tiempo_canal[canal] > duracionms)
              {
                  duracionms = tiempo_canal[canal];
              }
          }


        }
    }
}
